const xtpl=require('xtpl')
const path=require('path')
const md5=require('md5')
const captchapng = require('captchapng');
const db = require('../configs/database.js');
const baseCtr = require('./baseController.js');
// 邮箱验证码模块
var  nodemailer = require("nodemailer");
var smtpTransport = require('nodemailer-smtp-transport');
var wellknown = require("nodemailer-wellknown");
var config = wellknown("QQ");
config.auth = {
    user:'3176027419@qq.com',
    pass:'wvabufvkbrumdged'
}
// end邮箱验证码模块

// 后台主页
module.exports.mainIndex = function(req,res){

	// 查询课程总数
	db.table('subject').count('sub_id').then(function(subNum){
		console.log(subNum)

		// 查询管理员总数
		db.table('admin').count('admin_id').then(function(aNum){
			console.log(aNum)

			// 查询学生总数
			db.table('student').count('stu_id').then(function(stuNum){
				console.log(stuNum)

				// 查询班级总数
				db.table('class').count('class_id').then(function(clsNum){
					console.log(clsNum)

					// 查询课程对应的学生人数
					var data = [];
					db.query('select ss.sub_id,s.sub_name,count(ss.stu_id) as snum from pre_student_subject_data as ss left join pre_subject as s on ss.sub_id=s.sub_id group by ss.sub_id order by snum desc',data).then(function(sub_data){

						console.log(sub_data)
						// 显示视图
						xtpl.renderFile(
							path.join(__dirname,'../views/admin/main_index.html'),	// 加载视图文件
							{
								page:'mainIndex',	// 页面名称（后台菜单的判断显示）
								subNum:subNum,
								aNum:aNum,
								stuNum:stuNum,
								clsNum:clsNum,
								subData:sub_data
							},
							function(err,content){
								// 设置输出的内容类型 html
								res.setHeader('Content-Type','text/html;charset=utf-8');
								res.send(content);
							}
						)
					})
				})
			})

		})

	});
	
}




// module.exports.mainIndex=function(req,res){
// 	var nameArr=[]
// 	var idArr=[]
// 	db.table('subject').count('sub_id').then(function(subTotal){
// 		db.table('subject').limit(3).select().then(function(data){
// 			for(var i=0;i<data.length;i++){
// 				// console.log(data[i].sub_name)
// 				// console.log(data[i].sub_id)
// 				nameArr.push(data[i].sub_name)
// 				idArr.push(data[i].sub_id)
// 			}
// 			db.table('student_subject_data').where({sub_id:idArr[0]}).count('data_id').then(function(yuWen){
// 				db.table('student_subject_data').where({sub_id:idArr[1]}).count('data_id').then(function(maths){
// 					db.table('student_subject_data').where({sub_id:idArr[2]}).count('data_id').then(function(english){
// 						db.table('admin').count('admin_id').then(function(adminTotal){
// 							db.table('student').count('stu_id').then(function(stuTotal){
// 								db.table('class').count('class_id').then(function(classTotal){
// 									xtpl.renderFile(
// 										path.join(__dirname,'../views/admin/main_index.html'),
// 										{
// 											page:'mainIndex',
// 											subTotal:subTotal,
// 											yuWen:yuWen,
// 											maths:maths,
// 											english:english,
// 											adminTotal:adminTotal,
// 											stuTotal:stuTotal,
// 											classTotal:classTotal,
// 											nameArr:nameArr
// 										},
// 										function(err,content){
// 											// 设置输出的内容类型 html
// 											res.setHeader('Content-Type','text/html;charset=utf-8');
// 											res.send(content);
// 										}
// 									)
// 								})
// 							})
// 						})
// 					})
// 				})
// 			})
// 		})
			
// 	})
// }
module.exports.register=function(req,res){
	xtpl.renderFile(
		path.join(__dirname,'../views/admin/register.html'),
		{},
		function(err,content){
			// 设置输出的内容类型 html
			res.setHeader('Content-Type','text/html;charset=utf-8');
			res.send(content);
		}
	)
}
module.exports.registerData=function(req,res){

	db.table('admin').field('admin_id').where({admin_email:req.body.email}).find().then(function(result){

		if(JSON.stringify(result)=='{}'){

			console.log(req.signedCookies.code);//获取特定cookie值
			if(req.signedCookies.code==undefined){
				res.send( JSON.stringify({error:1,msg:'验证码已过期，请重新发送'}) )
				return false
			}
			if(req.signedCookies.code!=req.body.code){
				res.send( JSON.stringify({error:1,msg:'验证码错误'}) ) 
				return false
			}

			var data = {
				admin_email:req.body.email,
				admin_pwd:md5(req.body.pwd),
				register_time:(new Date().getTime())/1000
			}
			db.table('admin').add(data).then(function(){
				res.send( JSON.stringify({error:0,msg:'注册成功'}) ) 
			})
		}else{
			res.send( JSON.stringify({error:1,msg:'该邮箱已被注册'}) ) 
		}

	}).catch(function(err){
		console.log(err)	
	})
}
module.exports.login=function(req,res){
	xtpl.renderFile(
		path.join(__dirname,'../views/admin/login.html'),
		{},
		function(err,content){
			// 设置输出的内容类型 html
			res.setHeader('Content-Type','text/html;charset=utf-8');
			res.send(content);
		}
	)
}
module.exports.loginData=function(req,res){

	//图片验证码
	console.log(req.session.imgcode)
	if(req.session.imgcode!=req.body.code){
		res.send( JSON.stringify({error:1,msg:'验证码错误'}) ) 
		return false
	}

	db.table('admin').where({admin_email:req.body.email,admin_pwd:md5(req.body.pwd)}).find().then(function(result){
		if(JSON.stringify(result)!='{}'){

			req.session.email=req.body.email




			res.send( JSON.stringify({error:0,msg:'登录成功'}) ) 
		}else{
			res.send( JSON.stringify({error:1,msg:'邮箱或密码错误'}) ) 
		}
	})
}
// email
module.exports.sendCode=function(req,res){
	var email=req.body.email

	db.table('admin').field('admin_id').where({admin_email:req.body.email}).find().then(function(result){
		if(JSON.stringify(result)=='{}'){

			var transporter = nodemailer.createTransport(smtpTransport(config));
			var code=baseCtr.randomString()
			res.cookie("code",code,{maxAge:1*60*1000,signed:true}); //设置cookie和过期时间

			var mailOptions = {
			    from:"lin~<3176027419@qq.com>",
			    to:email,
			    subject:"注册账号",
			    text:"text plain",
			    html:"<div>尊敬的用户，您的验证码是：<span style='color:red;'>"+code+"</span></div>"
			};

			// send mail with defined transport object
			transporter.sendMail(mailOptions, function(error, info){
			    if(error){
			        return console.log(error);
			    }
			    // console.log('Message sent: ' + info.response);
			    res.send(JSON.stringify({error:0,msg:'发送成功'}))

			});

		}else{
			res.send( JSON.stringify({error:1,msg:'该邮箱已被注册'}) ) 
		}
	})
	
}

//图片验证码
module.exports.imgCode=function(req,res){
	// var code=baseCtr.randomString()
	var code = parseInt(Math.random() * 9000 + 1000);
    req.session.imgcode = code;

    var p = new captchapng(100, 30, code);
    p.color(0, 0, 0, 0);
    p.color(80, 80, 80, 255);
    var img = p.getBase64();
    var imgbase64 = new Buffer(img, 'base64');
    // var imgbase64 = Buffer.from(img, 'base64');
    res.writeHead(200, {
        'Content-Type': 'image/png'
    });
    res.end(imgbase64);
}

module.exports.logout=function(req,res){
	//删除session
	req.session.email=undefined
	res.redirect('/admin/main/login')
	// baseCtr.sendMsg('您已退出后台',res)
}

//管理员信息
module.exports.adminInfo=function(req,res){
	//删除session里面的email
	console.log(req.session.email)
	res.send(req.session.email)
}